To print images on a print medium such as a sheet of paper, many types of inkjet printers use a printhead to eject droplets of ink on the paper as the printhead scans across the page in a raster scan format. After the printhead has scanned the page to print a swath or band of image data, the paper is incrementally advanced in a direction perpendicular to the scanning direction for the next scan. The ink is ejected through nozzles in the printhead to form dots or pixels on the page, where each swath is the height the array of nozzles on the printhead. If the nozzles, and therefore, the dots are sufficiently small and closely spaced, the resulting pattern of dots appears visually as a continuous image. Contiguous horizontal swaths, formed by raster scanning, thus compose the printed image on the page.
Color inkjet printers use four pens, where each pen ejects one ink color through a set of nozzles. The four ink colors are black, cyan (C), yellow (Y), and magenta (M). CYM comprise the three subtractive primary colors with which all other colors can be obtained. Each set of nozzles can be located on separate printheads or on a single printhead on a print carriage. By ejecting various color combinations and patterns of ink drops during a printhead scan, a desired image and/or color can be reproduced on the paper.
The data for printing a particular swath or band is stored in a memory, such as a swath buffer, in horizontal raster form. The swath buffer holds the print data until the printhead is ready for printing the swath. Typically, the swath buffer has the capacity to hold enough data to print a full color swath using the entire height of the printhead. However, once a swath is printed, the printer is idle until print data for the next swath can be stored into the swath buffer, which reduces printer efficiency and throughput. Consequently, the size of the swath buffer is often doubled for double buffering so that print data can be stored for two full printhead swaths. This allows one swath to be printed while data for the next swath is buffered. As a result, printing for a swath can begin as soon as the previous swath has been printed. As print resolution and/or printhead size increases, the amount of memory for the swath buffer increases, thereby necessitating larger and more expensive memories.
One technique to increase print quality and reduce swath memory requirements is to use multi-pass printing with data compression. In multi-pass printing, a swath is printed using multiple print passes or scans, where each print pass uses the full printhead for high quality printing. The paper is advanced a corresponding fraction of the full printhead height after each print pass. For example, if F is the amount of paper advance when a full swath is printed in a single print pass and multi-pass printing is used where one print pass utilizes the full height of the printhead and N-1 additional print passes are used to fully print the new swath, the paper is advanced F/N amount after each print pass. Typically, F is the height of the nozzle array on the printhead, which can be, for example, in inches or number of nozzle rows.
If an amount S of stored print data is required for one print pass and N print passes are used to print a full swath, each additional print pass uses S/N amount of stored data. Once this amount is freed from the swath buffer, S/N amount of new print data can be buffered in. Thus, making two print passes requires an amount S+S/N of stored data. Each additional print pass requires S/N additional print data. Because the swath buffer releases S/N amount of print data after each print pass, the size of a swath buffer required to support double buffering can be reduced from 2S to S(1+1/N) using multi-pass printing. The swath buffer memory capacity can be further reduced by compressing the print data before storage into the swath buffer using conventional data compression techniques such as run-length encoding.
By first compressing the print data, a compressed swath buffer typically requires much less memory than an uncompressed swath buffer to utilize the full height of the printhead for printing most pages. Other pages with complex images may require almost as much or more memory than an uncompressed swath buffer to utilize the full height of the printhead. However, such pages would generally print slowly even with a much larger uncompressed buffer because printing these types of pages is normally limited by host and printer processing constraints. Therefore, it is generally advantageous to reduce the swath buffer size with data compression if an efficient mechanism for dynamically varying the amount of printhead used is available because of the minimal adverse effects on system throughput.
Once a sufficient amount of compressed print data is entered into the swath buffer for a print pass, a swath manager is notified, which then makes the desired print data available and initializes the printhead for a print pass. A print pass is then made, which frees up additional memory in the swath buffer in the amount needed to store the "just-used" print data. New print data can then be buffered into the swath buffer. Print passes thus continue with a portion of the swath buffer emptying out and new print data being stored after each print pass. The printer can typically begin printing the print passes very quickly after the print data is ready. However, the swath buffer may become filled before all the necessary print data can be stored. This condition can arise, for example, when data compression is unable to efficiently compress the data. If no print passes are pending or in progress, no additional memory space can be made available to store sufficient print data for the subsequent print pass. As a result, the quality and/or speed of the printing may be drastically reduced, or the printer may simply be unable to continue printing.
In the case where the swath buffer is filled before F rows of print data have been stored to generate a print pass, printing may be slowed down, inconsistent, or halted. FIGS. 1A-1C illustrate the situation when four print passes (N=4) use a 100 nozzle printhead (F=100) to completely print a partial swath. In FIG. 1A, 125 rows of print data have been stored in a swath buffer 100. In FIG. 1B, after a first print pass, 25 rows of print data have been transferred out, but only 10 new rows of print data have been buffered in, possibly due to inefficient data compression of complex images. As a result, the swath buffer 100 is now filled, but with only 110 rows of print data. After a second print pass, shown in FIG. 1C, 25 rows of print data have been transferred out, but again, only 10 rows of new print data have been buffered in, resulting in a swath buffer filled with only 95 rows of print data. Because the printhead is 100 rows in height, insufficient data exists in the swath buffer to utilize the full printhead height, which may result in the next print pass being slow, inconsistent, or halted.
Another undesirable situation associated with conventional swath buffers arises when the printhead is ready for printing, but the necessary print data for the next print pass has not been buffered into the swath buffer. Such a situation may arise when a swath manager is slowed down so that print data may enter the swath buffer slowly, inconsistently, or not at all. So, if sufficient print data is not available to the printhead, the printhead must remain idle until there is enough information for the next print pass, thereby reducing printer throughput and efficiency.
Furthermore, when multi-pass printing is used, print quality can decrease as a result of these delays. When a series of print passes is made to deposit overlapping primary colors (CYM) to print a particular secondary color, the actual color resulting on the paper can vary depending on the time delay between a first print pass and a second print pass. This variance is due in large part to the ink drops of the first print pass drying in different degrees before the ink drops of the second print pass are deposited.
For example, assume a large area of blue is to be printed. In a first print pass, the printhead deposits cyan ink, and in a second pass, the printhead deposits magenta ink over the cyan ink. A certain hue of blue will result, the hue depending on the amount of time between the first and second print passes. On a subsequent contiguous print pass, cyan ink is again deposited on the paper. However, if the printhead is ready for a next print pass to deposit magenta ink, but the swath buffer has not stored enough print data for the print pass, the printhead will remain idle until sufficient print data is available. When sufficient print data is available for a magenta ink print pass, the cyan ink drops may have dried to a much higher degree than the prior cyan ink drops. Consequently, a different hue of blue will result, thereby degrading the color quality of the printed image.
Accordingly, it is desirable to utilize the printhead and swath buffer of an inkjet printer to minimize the problems discussed above with respect to conventional inkjet printers.